package com.tree.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.tree.backend.entity.dto.department.DepartmentDTO;
import com.tree.backend.entity.dto.department.DepartmentQueryDTO;
import com.tree.backend.entity.pojo.Department;
import com.tree.backend.entity.vo.department.DepartmentTreeVO;
import com.tree.backend.entity.vo.department.DepartmentVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 部门组织表 服务类
 * </p>
 */
public interface IDepartmentService extends IService<Department> {
    
    /**
     * 获取部门列表（分页）
     * @param queryDTO 查询参数
     * @return 分页结果
     */
    IPage<DepartmentVO> getDepartmentList(DepartmentQueryDTO queryDTO);
    
    /**
     * 获取部门详情
     * @param id 部门ID
     * @return 部门详情
     */
    DepartmentVO getDepartmentDetail(Long id);
    
    /**
     * 新增部门
     * @param departmentDTO 部门数据
     * @return 新增的部门
     */
    DepartmentVO addDepartment(DepartmentDTO departmentDTO);
    
    /**
     * 更新部门
     * @param id 部门ID
     * @param departmentDTO 部门数据
     * @return 更新后的部门
     */
    DepartmentVO updateDepartment(Long id, DepartmentDTO departmentDTO);
    
    /**
     * 删除部门
     * @param id 部门ID
     * @return 是否删除成功
     */
    boolean deleteDepartment(Long id);
    
    /**
     * 获取部门树
     * @return 部门树
     */
    List<DepartmentTreeVO> getDepartmentTree();
    
    /**
     * 获取所有部门列表（不分页）
     * @return 部门列表
     */
    List<DepartmentVO> getAllDepartments();
}
